Browse Source

红娘直播任务

master
张彭杰 2 weeks ago
parent
commit
188a836b8d
27 changed files with 442 additions and 76 deletions
  1. 5
      dating-agency-mall-entity/pom.xml
  2. 41
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java
  3. 6
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java
  4. 29
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/revenuereward/event/RevenueRewardRecordCreatedEvent.java
  5. 40
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/GuildMemberProfitItemUserCommandController.java
  6. 36
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserCreateGuildMemberProfitItemDto.java
  7. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserDeleteGuildMemberProfitItemDto.java
  8. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserEditGuildMemberProfitItemDto.java
  9. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  10. 18
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java
  11. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java
  12. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java
  13. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java
  14. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/gmpi/GuildMemberProfitItemApplicationService.java
  15. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/revenuereward/RevenueRewardApplicationService.java
  16. 42
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  17. 16
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  18. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java
  19. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java
  20. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/repository/GuildMemberProfitItemRepository.java
  21. 17
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java
  22. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/gmpi/GuildMemberProfitItemDao.java
  23. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/GuildMemberProfitItemRepositoryImpl.java
  24. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/GuildMemberProfitItemQueryService.java
  25. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/impl/GuildMemberProfitItemQueryServiceImpl.java
  26. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java
  27. 19
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java

5
dating-agency-mall-entity/pom.xml

@ -31,5 +31,10 @@
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>com.qniao</groupId>
<artifactId>dating-agency-uec-constant</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

41
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java

@ -0,0 +1,41 @@
package com.qniao.dam.domain.aggregate.gmpi.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dau.domian.aggregate.lmar.constant.LiveMatchmakerTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.qniao.domain.Entity;
import java.math.BigDecimal;
/**
* 工会成员收益项
*
* @date 2026/04/29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_guild_member_profit_item")
public class GuildMemberProfitItem extends Entity<GuildMemberProfitItem> {
@ApiModelProperty("工会id")
private Long guildId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("红娘类型")
private LiveMatchmakerTypeEnum matchmakerType;
@ApiModelProperty("交易类型")
private TradeTypeEnum tradeType;
@ApiModelProperty("收益额")
private BigDecimal earnings;
@ApiModelProperty("收益记录ID")
private Long revenueRewardRecordId;
}

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

@ -43,15 +43,17 @@ public class RevenueReward extends Entity<RevenueReward> {
@ApiModelProperty("收益记录")
private transient List<RevenueRewardRecord> recordList;
public static RevenueReward initUser(Long userId) {
public static RevenueReward initUser(Long appId, Long userId) {
RevenueReward revenueReward = new RevenueReward();
revenueReward.setAppId(appId);
revenueReward.setUserId(userId);
revenueReward.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
return revenueReward;
}
public static RevenueReward initOrg(Long orgId) {
public static RevenueReward initOrg(Long appId, Long orgId) {
RevenueReward revenueReward = new RevenueReward();
revenueReward.setAppId(appId);
revenueReward.setOrgId(orgId);
revenueReward.setIdentityType(IdentityTypeEnum.ORGANIZATION);
return revenueReward;

29
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/revenuereward/event/RevenueRewardRecordCreatedEvent.java

@ -0,0 +1,29 @@
package com.qniao.dam.domian.aggregate.revenuereward.event;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.domain.BaseDomainEvent;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RevenueRewardRecordCreatedEvent extends BaseDomainEvent {
private Long id;
@ApiModelProperty("收益标识")
private Long revenueRewardId;
@ApiModelProperty("交易类型")
private TradeTypeEnum tradeType;
@ApiModelProperty("营收额")
private BigDecimal revenue;
}

40
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/GuildMemberProfitItemUserCommandController.java

@ -0,0 +1,40 @@
package com.qniao.dam.api.command.gmpi.user;
import com.qniao.dam.api.command.gmpi.user.request.*;
import com.qniao.dam.application.service.gmpi.GuildMemberProfitItemApplicationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
@Api(tags = "工会成员收益项")
@RestController
@RequestMapping("user")
public class GuildMemberProfitItemUserCommandController {
@Resource
private GuildMemberProfitItemApplicationService guildMemberProfitItemApplicationService;
@ApiOperation("用户创建工会成员收益项")
@PostMapping("create/guild-member-profit-item")
public void userCreateGuildMemberProfitItem(@RequestBody @Valid UserCreateGuildMemberProfitItemDto dto,
@RequestParam("userId") Long userId) {
guildMemberProfitItemApplicationService.create(dto.trans2Domain());
}
@ApiOperation("用户编辑工会成员收益项")
@PostMapping("edit/guild-member-profit-item")
public void userEditGuildMemberProfitItem(@RequestBody @Valid UserEditGuildMemberProfitItemDto dto,
@RequestParam("userId") Long userId) {
guildMemberProfitItemApplicationService.edit(dto.trans2Domain());
}
@ApiOperation("用户删除工会成员收益项")
@PostMapping("delete/guild-member-profit-item")
public void userDeleteGuildMemberProfitItem(@RequestBody @Valid UserDeleteGuildMemberProfitItemDto dto,
@RequestParam("userId") Long userId) {
guildMemberProfitItemApplicationService.delete(dto.getId());
}
}

36
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserCreateGuildMemberProfitItemDto.java

@ -0,0 +1,36 @@
package com.qniao.dam.api.command.gmpi.user.request;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
import com.qniao.domain.Trans2DomainAssembler;
import io.swagger.annotations.ApiModelProperty;
import com.qniao.framework.utils.TypeConvertUtils;
import java.math.BigDecimal;
import lombok.Data;
@Data
public class UserCreateGuildMemberProfitItemDto implements Trans2DomainAssembler<GuildMemberProfitItem> {
@ApiModelProperty("工会id")
private Long guildId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("红娘类型")
private Integer matchmakerType;
@ApiModelProperty("交易类型")
private Integer tradeType;
@ApiModelProperty("收益额")
private BigDecimal earnings;
@ApiModelProperty("收益记录ID")
private Long revenueRewardRecordId;
@Override
public GuildMemberProfitItem trans2Domain() {
return TypeConvertUtils.convert(this, GuildMemberProfitItem.class);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserDeleteGuildMemberProfitItemDto.java

@ -0,0 +1,12 @@
package com.qniao.dam.api.command.gmpi.user.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserDeleteGuildMemberProfitItemDto {
@ApiModelProperty("唯一标识")
private Long id;
}

39
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserEditGuildMemberProfitItemDto.java

@ -0,0 +1,39 @@
package com.qniao.dam.api.command.gmpi.user.request;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
import com.qniao.domain.Trans2DomainAssembler;
import io.swagger.annotations.ApiModelProperty;
import com.qniao.framework.utils.TypeConvertUtils;
import java.math.BigDecimal;
import lombok.Data;
@Data
public class UserEditGuildMemberProfitItemDto implements Trans2DomainAssembler<GuildMemberProfitItem> {
@ApiModelProperty("唯一标识")
private Long id;
@ApiModelProperty("工会id")
private Long guildId;
@ApiModelProperty("用户id")
private Long userId;
@ApiModelProperty("红娘类型")
private Integer matchmakerType;
@ApiModelProperty("交易类型")
private Integer tradeType;
@ApiModelProperty("收益额")
private BigDecimal earnings;
@ApiModelProperty("收益记录ID")
private Long revenueRewardRecordId;
@Override
public GuildMemberProfitItem trans2Domain() {
return TypeConvertUtils.convert(this, GuildMemberProfitItem.class);
}
}

6
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java

@ -237,9 +237,9 @@ public class OrderEventHandler extends BaseApplicationService {
Matchmaker matchmaker = matchmakerDao.selectById(matchmakerMarriageInformation.getMatchmakerId());
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) {
synchronized (matchmaker.getUserId().toString().intern()) {
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmaker.getUserId());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, matchmaker.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(matchmaker.getUserId());
revenueReward = RevenueReward.initUser(quzhaoqinAppId,matchmaker.getUserId());
}
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_RECOMMEND_COST_PCT);
@ -301,7 +301,7 @@ public class OrderEventHandler extends BaseApplicationService {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(rewardType);
if (Objects.nonNull(recommendRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByType(identityId, identityType);
RevenueReward revenueReward = revenueRewardQueryService.queryByType(quzhaoqinAppId,identityId, identityType);
//营收额
BigDecimal revenue = recommendRewardConfig.calculateReward(amount);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE,

18
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java

@ -133,7 +133,7 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
//经营性质推荐
//推荐服务商回本前 100%获得
//推荐服务商回本后 先提取50%,剩余20需要被推荐服务商回本50%后才能提取
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(mq.getRecommendServiceProviderOrgId());
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,mq.getRecommendServiceProviderOrgId());
if (!revenueReward.getAllRecoveryRequirement()) {
//推荐服务商回本前 100%获得
handleServiceProviderManagementFee(mq.getRecommendServiceProviderOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.OPERATING_RECOMMEND_100);
@ -149,7 +149,7 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
//非经营性质推荐
handleServiceProviderManagementFee(mq.getRecommendServiceProviderOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.NON_OPERATING_RECOMMEND);
//运营中心收益处理
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(mq.getOperationCenterOrgId());
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,mq.getOperationCenterOrgId());
if (!revenueReward.getAllRecoveryRequirement()) {
//推荐服务商回本前 55%获得
handleServiceProviderManagementFee(mq.getOperationCenterOrgId(), mq.getStoreName(), mq.getFranchiseFee(), RewardTypeEnum.NON_OPERATING_MANAGEMENT_FEE_55);
@ -174,7 +174,7 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
RewardTypeEnum rewardType) {
//服务商管理费
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(rewardType);
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(orgId);
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,orgId);
BigDecimal revenue = RewardConfig.calculatePct(franchiseFee, new BigDecimal(rewardConfig.getValue()));
//线下收益
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.SERVICE_PROVIDER_RECOMMEND_FEE, TradeSceneEnum.OFFLINE,
@ -296,14 +296,14 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
Store store = storeDao.selectById(mq.getStoreId());
for (FranchiseFeeProfitManagement franchiseFeeProfitManagement : franchiseFeeProfitManagementList) {
Order associateOrder = orderDao.selectById(franchiseFeeProfitManagement.getAssociatedOrderId());
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId());
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOrgId());
if (!storeRevenueReward.getAllRecoveryRequirement()) {
//未回本 拿100% 20%推荐费+50%门店费用+ 30%回本补贴
rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder,TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD);
rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.PAYBACK_SUBSIDY_30, associateOrder,TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD);
//发送事件 检查是否满足回本要求
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId());
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOrgId());
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId());
handle(storeReEvent);
} else {
@ -312,14 +312,14 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder,TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD);
//发送事件 检查是否满足回本要求
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId());
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOrgId());
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId());
handle(storeReEvent);
//区域分润
rewardApplicationService.handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), associateOrder.getOrderBelongName(), associateOrder.getSettlementAmount(), RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder,TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD);
//发送事件 检查是否满足回本要求
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId());
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOperationCenterOrgId());
RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId());
handle(operationCenterReEvent);
}
@ -353,9 +353,9 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
private void handleMatchmakerNoviceTaskReward(Long matchmakerUserId, BigDecimal revenue) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmakerUserId);
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, matchmakerUserId);
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(matchmakerUserId);
revenueReward = RevenueReward.initUser(quzhaoqinAppId,matchmakerUserId);
}
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD, TradeSceneEnum.ONLINE,
revenue, BigDecimal.ZERO, BigDecimal.ZERO, revenue, BigDecimal.ZERO);

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java

@ -53,7 +53,7 @@ public class RafflePrizeActivityWinningEventHandler extends BaseApplicationServi
BigDecimal earnings = new BigDecimal(winning.getRewardValue());
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByType(winning.getUserId(), IdentityTypeEnum.INDIVIDUAL);
RevenueReward revenueReward = revenueRewardQueryService.queryByType(quzhaoqinAppId,winning.getUserId(), IdentityTypeEnum.INDIVIDUAL);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.RAFFLE_PRIZE_ACTIVITY_WINNING, TradeSceneEnum.ONLINE,earnings, BigDecimal.ZERO,
BigDecimal.ZERO, earnings, earnings);

4
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java

@ -79,9 +79,9 @@ public class SiteActivityEventHandler extends BaseApplicationService {
Matchmaker matchmaker = matchmakerDao.selectById(mq.getInviteMatchmakerId());
MarriageInformation marriageInformation = marriageInformationDao.selectById(mq.getReceiveMiId());
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmaker.getUserId());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, matchmaker.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(matchmaker.getUserId());
revenueReward = RevenueReward.initUser(quzhaoqinAppId,matchmaker.getUserId());
}
//营收额
BigDecimal earnings = rewardConfig.calculateReward(order.getSettlementAmount());

4
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java

@ -79,9 +79,9 @@ public class VirtualAccountEventHandler extends BaseApplicationService {
if (Objects.nonNull(pct)) {
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(liveMatchmaker.getUserId());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(qulianlianAppId, liveMatchmaker.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(liveMatchmaker.getUserId());
revenueReward = RevenueReward.initUser(qulianlianAppId,liveMatchmaker.getUserId());
}
//营收额
BigDecimal revenue = new BigDecimal(worthRewardConfig.getValue()).multiply(BigDecimal.valueOf(event.getCostBalance()))

26
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/gmpi/GuildMemberProfitItemApplicationService.java

@ -0,0 +1,26 @@
package com.qniao.dam.application.service.gmpi;
import com.qniao.dam.domain.aggregate.gmpi.GuildMemberProfitItemAggregate;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class GuildMemberProfitItemApplicationService {
@Resource
private GuildMemberProfitItemAggregate guildMemberProfitItemAggregate;
public void create(GuildMemberProfitItem guildMemberProfitItem) {
guildMemberProfitItemAggregate.create(guildMemberProfitItem);
}
public void edit(GuildMemberProfitItem guildMemberProfitItem) {
guildMemberProfitItemAggregate.edit(guildMemberProfitItem);
}
public void delete(Long id) {
guildMemberProfitItemAggregate.delete(id);
}
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/revenuereward/RevenueRewardApplicationService.java

@ -73,7 +73,7 @@ public class RevenueRewardApplicationService {
public void create(RevenueReward revenueReward) {
RevenueReward existRevenueReward = revenueRewardQueryService.queryByUserId(revenueReward.getUserId());
RevenueReward existRevenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, revenueReward.getUserId());
if (Objects.nonNull(existRevenueReward)) {
revenueReward.setId(existRevenueReward.getId());
}
@ -118,7 +118,7 @@ public class RevenueRewardApplicationService {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.NON_OPERATING_PIPELINE_REVENUE);
//营收额
BigDecimal revenue = rewardConfig.calculateReward(rewardRecord.getEarnings());
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(recommendServiceProviderOrgId);
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,recommendServiceProviderOrgId);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.PIPELINE_REVENUE_FEE, tradeScene,
revenue, new BigDecimal(rewardConfig.getValue()), BigDecimal.ZERO, revenue, rewardRecord.getEarnings());
revenueRewardRecord.setContent(content + "管道收益");
@ -149,9 +149,9 @@ public class RevenueRewardApplicationService {
//邀请红娘在有效期内才能拿到佣金+积分奖励
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmaker.getUserId());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, matchmaker.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(matchmaker.getUserId());
revenueReward = RevenueReward.initUser(quzhaoqinAppId,matchmaker.getUserId());
}
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.ENTRUST_SERVICE_MATCHMAKER_FEE);

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

@ -108,9 +108,9 @@ public class RewardApplicationService extends BaseApplicationService {
//邀请红娘在有效期内才能拿到佣金+积分奖励
if (Objects.nonNull(initiatorMatchmaker) && initiatorMatchmaker.checkEnable()) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, dto.getInitiatorUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(dto.getInitiatorUserId());
revenueReward = RevenueReward.initUser(quzhaoqinAppId,dto.getInitiatorUserId());
}
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND);
@ -167,28 +167,28 @@ public class RewardApplicationService extends BaseApplicationService {
//门店直推的话
//门店回本前 拿100% 20%推荐费+50%门店费用30%直接拿+20%新手任务完成+ 30%回本补贴
//门店回本后 拿70% 20%推荐费+50%门店费用30%直接拿+20%新手任务完成
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
if (Objects.nonNull(store.getFranchiseFee()) && store.getFranchiseFee().compareTo(BigDecimal.ZERO) > 0 && !storeRevenueReward.getAllRecoveryRequirement()) {
//未回本 拿100% 20%推荐费+50%门店费用+ 30%回本补贴
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.PAYBACK_SUBSIDY_30, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
//发送事件 检查是否满足回本要求
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId());
this.sendEvent(storeReEvent);
} else {
//回本后 拿70% 20%推荐费+50%门店费用
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
//发送事件 检查是否满足回本要求
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId());
this.sendEvent(storeReEvent);
//区域分润
handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
//发送事件 检查是否满足回本要求
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId());
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOperationCenterOrgId());
RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId());
this.sendEvent(operationCenterReEvent);
}
@ -231,13 +231,13 @@ public class RewardApplicationService extends BaseApplicationService {
Store store,
BigDecimal rewardAmount,
Order associateOrder) {
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
if (!storeRevenueReward.getAllRecoveryRequirement()) {
//未回本 门店拿50% + 30%回本补贴
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.PAYBACK_SUBSIDY_30, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
//发送事件 检查是否满足回本要求.
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId());
this.sendEvent(storeReEvent);
} else {
@ -245,7 +245,7 @@ public class RewardApplicationService extends BaseApplicationService {
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.OPERATING_RECOMMEND_50, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
handleStoreRecommendMatchmakerFee(store.getOrgId(), dto.getReceiveUserName(), rewardAmount, RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
//发送事件 检查是否满足回本要求
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward stRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
RevenueRewardUpdatedEvent storeReEvent = new RevenueRewardUpdatedEvent(stRevenueReward.getId());
this.sendEvent(storeReEvent);
@ -253,7 +253,7 @@ public class RewardApplicationService extends BaseApplicationService {
handleStoreRecommendMatchmakerFee(store.getOperationCenterOrgId(), dto.getReceiveUserName(), rewardAmount,
RewardTypeEnum.SERVICE_PROVIDER_MANAGEMENT_FEE, associateOrder,TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE);
//发送事件 检查是否满足回本要求
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId());
RevenueReward operationCenterRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOperationCenterOrgId());
RevenueRewardUpdatedEvent operationCenterReEvent = new RevenueRewardUpdatedEvent(operationCenterRevenueReward.getId());
this.sendEvent(operationCenterReEvent);
}
@ -267,7 +267,7 @@ public class RewardApplicationService extends BaseApplicationService {
TradeTypeEnum tradeType) {
//服务商管理费
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(rewardType);
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(orgId);
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,orgId);
BigDecimal revenue = RewardConfig.calculatePct(franchiseFee, new BigDecimal(rewardConfig.getValue()));
//线下收益
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE,
@ -319,9 +319,9 @@ public class RewardApplicationService extends BaseApplicationService {
BigDecimal recommendRewardPct = rewardConfigQueryService.queryRecommendRewardPct(dto.getInitiatorLevel(), dto.getReceiveLevel());
if (recommendRewardPct.compareTo(BigDecimal.ZERO) > 0) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, dto.getInitiatorUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(dto.getInitiatorUserId());
revenueReward = RevenueReward.initUser(quzhaoqinAppId,dto.getInitiatorUserId());
}
//营收额
BigDecimal revenue = RewardConfig.calculatePct(rewardAmount, recommendRewardPct);
@ -379,7 +379,7 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE);
if (Objects.nonNull(recommendRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId());
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getStoreOrgId());
//营收额
BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE,
@ -409,7 +409,7 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER);
if (Objects.nonNull(recommendRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId());
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,dto.getOperationCenterOrgId());
//营收额
BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE,
@ -449,9 +449,9 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver());
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(quzhaoqinAppId, dto.getReceiver());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(dto.getReceiver());
revenueReward = RevenueReward.initUser(quzhaoqinAppId,dto.getReceiver());
}
//营收额
BigDecimal revenue = dto.getReceivedAmount();
@ -516,7 +516,7 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(rewardType);
if (Objects.nonNull(recommendRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByType(identityId, identityType);
RevenueReward revenueReward = revenueRewardQueryService.queryByType(quzhaoqinAppId,identityId, identityType);
//营收额
BigDecimal revenue = recommendRewardConfig.calculateReward(amount);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE,
@ -560,7 +560,7 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
RevenueReward revenueReward = revenueRewardQueryService.queryByType(quzhaoqinAppId,dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
@ -663,7 +663,7 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE);
if (Objects.nonNull(recommendRewardConfig)) {
//收益信息
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId());
RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOrgId());
//营收额
BigDecimal revenue = recommendRewardConfig.calculateReward(record.getTotalAssociateOrderAmount());
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE,
@ -695,7 +695,7 @@ public class RewardApplicationService extends BaseApplicationService {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER);
if (Objects.nonNull(recommendRewardConfig)) {
//收益信息
RevenueReward ocRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId());
RevenueReward ocRevenueReward = revenueRewardQueryService.queryByOrgId(quzhaoqinAppId,store.getOperationCenterOrgId());
//营收额
BigDecimal revenue = recommendRewardConfig.calculateReward(record.getTotalAssociateOrderAmount());
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE,

16
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java

@ -198,9 +198,9 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
virtualAccountAggregate.handleConsumeData(virtualAccount, order.getSettlementAmount().intValue(), VirtualAccountTradeTypeEnum.GIFT, "礼物");
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(toUserId);
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(appId, toUserId);
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(toUserId);
revenueReward = RevenueReward.initUser(appId,toUserId);
}
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
RewardConfig giftRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.CHAT_PROFIT_BY_GIFT);
@ -266,9 +266,9 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
virtualAccountAggregate.handleConsumeData(virtualAccount, order.getSettlementAmount().intValue(), VirtualAccountTradeTypeEnum.GIFT, "礼物");
//收益信息
RevenueReward toRevenueReward = revenueRewardQueryService.queryByUserId(toUserId);
RevenueReward toRevenueReward = revenueRewardQueryService.queryByUserId(appId, toUserId);
if (Objects.isNull(toRevenueReward)) {
toRevenueReward = RevenueReward.initUser(toUserId);
toRevenueReward = RevenueReward.initUser(appId,toUserId);
}
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
//营收额 todo
@ -287,9 +287,9 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
toWalletAccount.setRecordList(Collections.singletonList(toWalletAccountRecord));
//收益信息
RevenueReward anchorRevenueReward = revenueRewardQueryService.queryByUserId(anchorId);
RevenueReward anchorRevenueReward = revenueRewardQueryService.queryByUserId(appId, anchorId);
if (Objects.isNull(anchorRevenueReward)) {
anchorRevenueReward = RevenueReward.initUser(anchorId);
anchorRevenueReward = RevenueReward.initUser(appId,anchorId);
}
//营收额
BigDecimal giftRewardPct = rewardConfigQueryService.queryMatchmakerChannelGiftPct(anchorId, channelCreatorTodayCrossMicCount);
@ -335,9 +335,9 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
virtualAccountAggregate.handleConsumeData(virtualAccount, order.getSettlementAmount().intValue(), VirtualAccountTradeTypeEnum.GIFT, "礼物");
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(toUserId);
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(appId, toUserId);
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(toUserId);
revenueReward = RevenueReward.initUser(appId,toUserId);
}
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
//营收额 todo

31
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java

@ -17,16 +17,19 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao;
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Service
public class WalletAccountApplicationService {
public class WalletAccountApplicationService extends BaseApplicationService {
@Resource
private WalletAccountDao walletAccountDao;
@ -61,20 +64,34 @@ public class WalletAccountApplicationService {
}
public void acquireRewardAmount(UserAcquireRewardAmountDto dto) {
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getAppId(),dto.getUserId(), IdentityTypeEnum.INDIVIDUAL);
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getAppId(), dto.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(dto.getAppId(), dto.getUserId());
}
//营收额
BigDecimal revenue = dto.getAmount();
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(dto.getTradeType(), TradeSceneEnum.ONLINE,
revenue, BigDecimal.valueOf(100), BigDecimal.ZERO, revenue, revenue);
revenueRewardRecord.setContent(dto.getRemark());
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getAppId(), dto.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(dto.getAmount()));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.CHAT_REWARD, dto.getAmount(), true, originalBalance, walletAccount.getTotalBalance());
WalletAccountRecord record = WalletAccountRecord.build(dto.getTradeType(), dto.getAmount(), true, originalBalance, walletAccount.getTotalBalance());
record.setRemark(dto.getRemark());
walletAccount.setRecordList(Collections.singletonList(record));
walletAccountAggregate.save(walletAccount);
List<BaseDomainEvent> eventList = acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
this.sendEvent(eventList);
}
public void acquireLinkMicCardReward(UserAcquireLinkMicCardRewardDto dto) {
synchronized (dto.getAnchorUserId().toString().intern()) {
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.CHAT_PROFIT_BY_LINK_MIC_CARD);
handleChannelConnectReward(dto.getAppId(),dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(), new BigDecimal(worthRewardConfig.getValue()));
handleChannelConnectReward(dto.getAppId(), dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(), new BigDecimal(worthRewardConfig.getValue()));
}
}
@ -84,9 +101,9 @@ public class WalletAccountApplicationService {
Integer channelCreatorTodayCrossMicCount,
BigDecimal worthReward) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(userId);
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(appId, userId);
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(userId);
revenueReward = RevenueReward.initUser(appId, userId);
}
//营收额 todo
BigDecimal giftRewardPct = rewardConfigQueryService.queryMatchmakerChannelGiftPct(userId, channelCreatorTodayCrossMicCount);

31
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java

@ -0,0 +1,31 @@
package com.qniao.dam.domain.aggregate.gmpi;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
import com.qniao.dam.domain.aggregate.gmpi.repository.GuildMemberProfitItemRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 工会成员收益项
*
* @date 2026/04/29
*/
@Service
public class GuildMemberProfitItemAggregate {
@Resource
private GuildMemberProfitItemRepository repository;
public void create(GuildMemberProfitItem entity) {
repository.save(entity);
}
public void edit(GuildMemberProfitItem entity) {
repository.save(entity);
}
public void delete(Long id) {
repository.delete(id);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/repository/GuildMemberProfitItemRepository.java

@ -0,0 +1,12 @@
package com.qniao.dam.domain.aggregate.gmpi.repository;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
import com.qniao.domain.Repository;
/**
* 工会成员收益项
*
* @date 2026/04/29
*/
public interface GuildMemberProfitItemRepository extends Repository<GuildMemberProfitItem, Long> {
}

17
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java

@ -1,13 +1,19 @@
package com.qniao.dam.domain.service.revenuereward;
import cn.hutool.core.collection.CollUtil;
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domian.aggregate.revenuereward.event.RevenueRewardRecordCreatedEvent;
import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service
@ -19,13 +25,20 @@ public class AcquireRevenueRewardDomainService {
private WalletAccountAggregate walletAccountAggregate;
@Transactional(rollbackFor = Exception.class)
public void handle(RevenueReward revenueReward, WalletAccount walletAccount) {
public List<BaseDomainEvent> handle(RevenueReward revenueReward, WalletAccount walletAccount) {
List<BaseDomainEvent> eventList = new ArrayList<>();
revenueRewardAggregate.save(revenueReward);
if(Objects.nonNull(walletAccount)) {
if (Objects.nonNull(walletAccount)) {
walletAccount.getRecordList().forEach(record -> {
record.setAssociateId(revenueReward.getRecordList().get(0).getId());
});
walletAccountAggregate.save(walletAccount);
}
if (CollUtil.isNotEmpty(revenueReward.getRecordList())){
revenueReward.getRecordList().forEach(record -> {
eventList.add(TypeConvertUtils.convert(record, RevenueRewardRecordCreatedEvent.class));
});
}
return eventList;
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/gmpi/GuildMemberProfitItemDao.java

@ -0,0 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.gmpi;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
/**
* 工会成员收益项
*
* @date 2026/04/29
*/
public interface GuildMemberProfitItemDao extends BaseMapper<GuildMemberProfitItem> {
}

41
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/GuildMemberProfitItemRepositoryImpl.java

@ -0,0 +1,41 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem;
import com.qniao.dam.domain.aggregate.gmpi.repository.GuildMemberProfitItemRepository;
import com.qniao.dam.infrastructure.persistent.dao.gmpi.GuildMemberProfitItemDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
* 工会成员收益项
*
* @date 2026/04/29
*/
@Service
public class GuildMemberProfitItemRepositoryImpl implements GuildMemberProfitItemRepository {
@Resource
private GuildMemberProfitItemDao dao;
@Override
public GuildMemberProfitItem load(Long id) {
return dao.selectById(id);
}
@Override
public Long save(GuildMemberProfitItem entity) {
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) {
dao.insert(entity);
} else {
dao.updateById(entity);
}
return entity.getId();
}
@Override
public void delete(Long id) {
dao.deleteById(id);
}
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/GuildMemberProfitItemQueryService.java

@ -0,0 +1,5 @@
package com.qniao.dam.query.gmpi;
public interface GuildMemberProfitItemQueryService {
}

9
dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/impl/GuildMemberProfitItemQueryServiceImpl.java

@ -0,0 +1,9 @@
package com.qniao.dam.query.gmpi.impl;
import com.qniao.dam.query.gmpi.GuildMemberProfitItemQueryService;
import org.springframework.stereotype.Service;
@Service
public class GuildMemberProfitItemQueryServiceImpl implements GuildMemberProfitItemQueryService {
}

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

@ -12,19 +12,18 @@ import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.framework.utils.PageUtil;
import java.math.BigDecimal;
import java.util.List;
public interface RevenueRewardQueryService {
RevenueReward queryByUserId(Long userId);
RevenueReward queryByUserId(Long appId, Long userId);
UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams);
IPage<UseGetRevenueRewardRecordVo> pageRevenueRewardRecord(PageUtil pageUtil, UsePageRevenueRewardRecordQueryParams queryParams);
RevenueReward queryByOrgId(Long orgId);
RevenueReward queryByOrgId(Long appId,Long orgId);
RevenueReward queryByType(Long identityId, IdentityTypeEnum identityType);
RevenueReward queryByType(Long appId,Long identityId, IdentityTypeEnum identityType);
IPage<UserPageRevenueRewardRecordByOperatorVo> pageRevenueRewardRecordByOperator(PageUtil pageUtil, UserPageRevenueRewardRecordByOperatorQueryParams queryParams);

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

@ -9,7 +9,6 @@ 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.product.constant.ProductSubCategoryEnum;
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;
@ -20,12 +19,9 @@ 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.view.RevenueRewardViewDao;
import com.qniao.dam.query.matchmaker.MatchmakerQueryService;
import com.qniao.dam.query.operationcenter.OperationCenterQueryService;
import com.qniao.dam.query.org.OrganizationQueryService;
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.store.StoreQueryService;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter;
import com.qniao.dau.domain.aggregate.organization.entity.Organization;
import com.qniao.dau.domain.aggregate.store.entity.Store;
import com.qniao.dau.domian.aggregate.organization.constant.OrganizationTypeEnum;
@ -34,7 +30,6 @@ import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -60,25 +55,27 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService
private StoreQueryService storeQueryService;
@Override
public RevenueReward queryByUserId(Long userId) {
public RevenueReward queryByUserId(Long appId, Long userId) {
return revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.eq(RevenueReward::getAppId, appId)
.eq(RevenueReward::getUserId, userId)
.last("limit 1"));
}
@Override
public RevenueReward queryByOrgId(Long orgId) {
public RevenueReward queryByOrgId(Long appId, Long orgId) {
RevenueReward revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.eq(RevenueReward::getOrgId, orgId)
.last("limit 1"));
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initOrg(orgId);
revenueReward = RevenueReward.initOrg(appId, orgId);
}
return revenueReward;
}
@Override
public RevenueReward queryByType(Long identityId,
public RevenueReward queryByType(Long appId,
Long identityId,
IdentityTypeEnum identityType) {
RevenueReward revenueReward = null;
if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) {
@ -86,14 +83,14 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService
.eq(RevenueReward::getUserId, identityId)
.last("limit 1"));
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(identityId);
revenueReward = RevenueReward.initUser(appId,identityId);
}
} else {
revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.eq(RevenueReward::getOrgId, identityId)
.last("limit 1"));
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initOrg(identityId);
revenueReward = RevenueReward.initOrg(appId,identityId);
}
}
return revenueReward;

Loading…
Cancel
Save