diff --git a/rc-service/rc-service-other/other-start/src/test/java/badge/BatchSendBadgeTest.java b/rc-service/rc-service-other/other-start/src/test/java/badge/BatchSendBadgeTest.java index 078fa5ca..ce47188b 100644 --- a/rc-service/rc-service-other/other-start/src/test/java/badge/BatchSendBadgeTest.java +++ b/rc-service/rc-service-other/other-start/src/test/java/badge/BatchSendBadgeTest.java @@ -7,9 +7,13 @@ import com.red.circle.mq.business.model.event.BadgeOperateEvent; import com.red.circle.mq.rocket.business.producer.UserMqMessageService; import com.red.circle.other.infra.database.mongo.entity.team.team.TeamMember; import com.red.circle.other.infra.database.mongo.service.team.team.TeamMemberService; +import com.red.circle.other.infra.database.rds.entity.badge.BadgeBackpack; +import com.red.circle.other.infra.database.rds.entity.badge.BadgeConfig; import com.red.circle.other.infra.database.rds.entity.sys.Administrator; import com.red.circle.other.infra.database.rds.entity.team.BusinessDevelopmentBaseInfo; import com.red.circle.other.infra.database.rds.entity.team.RoomBdLead; +import com.red.circle.other.infra.database.rds.service.badge.BadgeBackpackService; +import com.red.circle.other.infra.database.rds.service.badge.BadgeConfigService; import com.red.circle.other.infra.database.rds.service.sys.AdministratorService; import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentBaseInfoService; import com.red.circle.other.infra.database.rds.service.team.RoomBdLeadService; @@ -49,6 +53,10 @@ public class BatchSendBadgeTest { private AdministratorService administratorService; @Autowired private FreightGoldClient freightGoldClient; + @Autowired + private BadgeBackpackService badgeBackpackService; + @Autowired + private BadgeConfigService badgeConfigService; // 线程池大小 private static final int THREAD_POOL_SIZE = 10; @@ -67,13 +75,13 @@ public class BatchSendBadgeTest { // sendBdLeaderBadges(executor); // 3. 批量发放BD勋章 -// sendBdBadges(executor); + sendBdBadges(executor); // 4. 批量发放管理员勋章 // sendAdminBadges(executor); // 5. 批量发放金币代理勋章 - sendRechargeAgencyBadges(executor); +// sendRechargeAgencyBadges(executor); } finally { executor.shutdown(); @@ -89,6 +97,18 @@ public class BatchSendBadgeTest { List list = teamMemberService.list(); log.info("开始发放代理主播勋章,总数: {}", list.size()); + BadgeConfig agencyConfig = badgeConfigService.getByBadgeKey(BadgeKeyEnum.AGENCY.name()); + if (agencyConfig == null) { + log.error("{}徽章不存在", BadgeKeyEnum.AGENCY.name()); + return; + } + + BadgeConfig hostConfig = badgeConfigService.getByBadgeKey(BadgeKeyEnum.HOST.name()); + if (hostConfig == null) { + log.error("{}徽章不存在", BadgeKeyEnum.HOST.name()); + return; + } + AtomicInteger counter = new AtomicInteger(0); list.forEach(teamMember -> { @@ -96,22 +116,34 @@ public class BatchSendBadgeTest { try { Long userId = teamMember.getMemberId(); - // 发放主播勋章 - userMqMessageService.sendBadgeOperateEvent( - userId, - BadgeKeyEnum.HOST.name(), - BadgeOperateEvent.OperationType.WEAR.name() - ); - - if (teamMember.getRole() == TeamMemberRole.OWN) { - // 发放代理勋章 + BadgeBackpack existBadge = badgeBackpackService.query() + .eq(BadgeBackpack::getUserId, userId) + .eq(BadgeBackpack::getBadgeId, hostConfig.getId()) + .getOne(); + if (existBadge == null) { + // 发放主播勋章 userMqMessageService.sendBadgeOperateEvent( userId, - BadgeKeyEnum.AGENCY.name(), + BadgeKeyEnum.HOST.name(), BadgeOperateEvent.OperationType.WEAR.name() ); } + if (teamMember.getRole() == TeamMemberRole.OWN) { + BadgeBackpack badgeBackpack = badgeBackpackService.query() + .eq(BadgeBackpack::getUserId, userId) + .eq(BadgeBackpack::getBadgeId, agencyConfig.getId()) + .getOne(); + if (badgeBackpack == null) { + // 发放代理勋章 + userMqMessageService.sendBadgeOperateEvent( + userId, + BadgeKeyEnum.AGENCY.name(), + BadgeOperateEvent.OperationType.WEAR.name() + ); + } + } + int count = counter.incrementAndGet(); if (count % 100 == 0) { log.info("代理主播勋章发放进度: {}/{}", count, list.size()); @@ -170,6 +202,12 @@ public class BatchSendBadgeTest { List list = businessDevelopmentBaseInfoService.listAll(); log.info("开始发放BD勋章,总数: {}", list.size()); + BadgeConfig bdConfig = badgeConfigService.getByBadgeKey(BadgeKeyEnum.BD.name()); + if (bdConfig == null) { + log.error("{}徽章不存在", BadgeKeyEnum.BD.name()); + return; + } + AtomicInteger counter = new AtomicInteger(0); list.forEach(bd -> { @@ -177,11 +215,18 @@ public class BatchSendBadgeTest { try { Long userId = bd.getUserId(); - userMqMessageService.sendBadgeOperateEvent( - userId, - BadgeKeyEnum.BD.name(), - BadgeOperateEvent.OperationType.WEAR.name() - ); + BadgeBackpack existBadge = badgeBackpackService.query() + .eq(BadgeBackpack::getUserId, userId) + .eq(BadgeBackpack::getBadgeId, bdConfig.getId()) + .getOne(); + if (existBadge == null) { + // 发放BD勋章 + userMqMessageService.sendBadgeOperateEvent( + userId, + BadgeKeyEnum.BD.name(), + BadgeOperateEvent.OperationType.WEAR.name() + ); + } int count = counter.incrementAndGet(); if (count % 100 == 0) { @@ -269,6 +314,12 @@ public class BatchSendBadgeTest { int cursor = 1; boolean hasMore = true; + BadgeConfig badgeConfig = badgeConfigService.getByBadgeKey(BadgeKeyEnum.RECHARGE_AGENCY.name()); + if (badgeConfig == null) { + log.error("{}徽章不存在", BadgeKeyEnum.RECHARGE_AGENCY.name()); + return; + } + while (hasMore) { PageQuery pageQuery = new PageQuery(); pageQuery.setCursor(cursor); @@ -299,6 +350,14 @@ public class BatchSendBadgeTest { return; } + BadgeBackpack existBadge = badgeBackpackService.query() + .eq(BadgeBackpack::getUserId, userId) + .eq(BadgeBackpack::getBadgeId, badgeConfig.getId()) + .getOne(); + if (existBadge != null) { + return; + } + userMqMessageService.sendBadgeOperateEvent( userId, BadgeKeyEnum.RECHARGE_AGENCY.name(),