diff --git a/dating-agency-mall-entity/pom.xml b/dating-agency-mall-entity/pom.xml index 0014c77..278eb20 100644 --- a/dating-agency-mall-entity/pom.xml +++ b/dating-agency-mall-entity/pom.xml @@ -31,5 +31,10 @@ cn.hutool hutool-all + + com.qniao + dating-agency-uec-constant + 0.0.1-SNAPSHOT + \ No newline at end of file diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java new file mode 100644 index 0000000..7ddfc0e --- /dev/null +++ b/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 { + + @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; + +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java index 88cb44d..10d1215 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java +++ b/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 { @ApiModelProperty("收益记录") private transient List 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; diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/revenuereward/event/RevenueRewardRecordCreatedEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/revenuereward/event/RevenueRewardRecordCreatedEvent.java new file mode 100644 index 0000000..ccb9a3e --- /dev/null +++ b/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; + +} + diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/GuildMemberProfitItemUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/GuildMemberProfitItemUserCommandController.java new file mode 100644 index 0000000..469c451 --- /dev/null +++ b/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()); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserCreateGuildMemberProfitItemDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserCreateGuildMemberProfitItemDto.java new file mode 100644 index 0000000..afc7c30 --- /dev/null +++ b/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 { + + + @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); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserDeleteGuildMemberProfitItemDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserDeleteGuildMemberProfitItemDto.java new file mode 100644 index 0000000..357d229 --- /dev/null +++ b/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; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserEditGuildMemberProfitItemDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/gmpi/user/request/UserEditGuildMemberProfitItemDto.java new file mode 100644 index 0000000..7f30d80 --- /dev/null +++ b/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 { + + + @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); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java index 7c9547f..e8f535d 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java +++ b/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, diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java index 7e5bb20..df131d6 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java +++ b/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); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java index d063934..ff9f6a1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java +++ b/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); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java index b08f7e3..0ef7abe 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java +++ b/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()); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java index b92050d..bb4828e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java +++ b/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())) diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/gmpi/GuildMemberProfitItemApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/gmpi/GuildMemberProfitItemApplicationService.java new file mode 100644 index 0000000..eb9cbc5 --- /dev/null +++ b/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); + } +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/revenuereward/RevenueRewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/revenuereward/RevenueRewardApplicationService.java index f49a02d..a66550b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/revenuereward/RevenueRewardApplicationService.java +++ b/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); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java index 6a6b5e7..5b83cc5 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java @@ -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, diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java index 272dc71..9c71d92 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java +++ b/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 diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java index 52cdfd2..3bf932b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java +++ b/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 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); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java new file mode 100644 index 0000000..e4d0858 --- /dev/null +++ b/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); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/repository/GuildMemberProfitItemRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/repository/GuildMemberProfitItemRepository.java new file mode 100644 index 0000000..da1a9bd --- /dev/null +++ b/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 { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java index 2e49558..c9bd058 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java +++ b/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 handle(RevenueReward revenueReward, WalletAccount walletAccount) { + List 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; } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/gmpi/GuildMemberProfitItemDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/gmpi/GuildMemberProfitItemDao.java new file mode 100644 index 0000000..57d6e3f --- /dev/null +++ b/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 { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/GuildMemberProfitItemRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/GuildMemberProfitItemRepositoryImpl.java new file mode 100644 index 0000000..5af0fe4 --- /dev/null +++ b/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); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/GuildMemberProfitItemQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/GuildMemberProfitItemQueryService.java new file mode 100644 index 0000000..d07c70e --- /dev/null +++ b/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 { + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/impl/GuildMemberProfitItemQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/gmpi/impl/GuildMemberProfitItemQueryServiceImpl.java new file mode 100644 index 0000000..5fa58f4 --- /dev/null +++ b/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 { + +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java index 45b2e7f..00fbfbf 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java @@ -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 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 pageRevenueRewardRecordByOperator(PageUtil pageUtil, UserPageRevenueRewardRecordByOperatorQueryParams queryParams); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java index f10fb16..2ecd8a8 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java @@ -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() + .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() .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() .eq(RevenueReward::getOrgId, identityId) .last("limit 1")); if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.initOrg(identityId); + revenueReward = RevenueReward.initOrg(appId,identityId); } } return revenueReward;