徽章增加manager类型
This commit is contained in:
parent
7d4ab3e68a
commit
1630fc9383
@ -12,6 +12,8 @@ import com.red.circle.console.inner.error.ConsoleErrorCode;
|
||||
import com.red.circle.framework.core.asserts.ResponseAssert;
|
||||
import com.red.circle.framework.core.response.CommonErrorCode;
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
import com.red.circle.mq.business.model.event.BadgeOperateEvent;
|
||||
import com.red.circle.mq.rocket.business.producer.UserMqMessageService;
|
||||
import com.red.circle.other.inner.endpoint.team.bd.BdTeamInfoClient;
|
||||
import com.red.circle.other.inner.endpoint.team.bd.BdTeamMemberClient;
|
||||
import com.red.circle.other.inner.endpoint.user.user.UserGoldCoinRechargeClient;
|
||||
@ -19,6 +21,7 @@ import com.red.circle.other.inner.endpoint.user.user.UserInviteUserClient;
|
||||
import com.red.circle.other.inner.endpoint.team.logs.TeamImportanceLogClient;
|
||||
import com.red.circle.other.inner.endpoint.team.logs.TeamProcessApprovalClient;
|
||||
import com.red.circle.other.inner.endpoint.team.target.UserHistoryIdentityClient;
|
||||
import com.red.circle.other.inner.enums.material.BadgeKeyEnum;
|
||||
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamPageQryCmd;
|
||||
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamUpdateOpsCmd;
|
||||
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamWorkStatisticsQryCmd;
|
||||
@ -71,6 +74,7 @@ public class TeamBDInfoServiceImpl implements TeamBDInfoService {
|
||||
private final TeamImportanceLogClient teamImportanceLogClient;
|
||||
private final TeamProcessApprovalClient teamProcessApprovalClient;
|
||||
private final UserHistoryIdentityClient userHistoryIdentityClient;
|
||||
private final UserMqMessageService userMqMessageService;
|
||||
private final UserGoldCoinRechargeClient userGoldCoinRechargeClient;
|
||||
|
||||
|
||||
@ -343,6 +347,8 @@ public class TeamBDInfoServiceImpl implements TeamBDInfoService {
|
||||
);
|
||||
|
||||
userHistoryIdentityClient.saveBd(userProfile.getId());
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(userProfile.getId(), BadgeKeyEnum.BD.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -373,6 +379,8 @@ public class TeamBDInfoServiceImpl implements TeamBDInfoService {
|
||||
.setCreateUserOrigin(1)
|
||||
);
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(db.getUserId(), BadgeKeyEnum.BD.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
|
||||
// 获得需要被移除的成员
|
||||
List<BdTeamMemberDTO> teamList = bdTeamMemberClient
|
||||
.listByUserId(db.getUserId()).getBody();
|
||||
|
||||
@ -152,6 +152,9 @@ public class TeamLeaderBDServiceImpl implements TeamLeaderBDService {
|
||||
|
||||
userHistoryIdentityClient.saveBd(cmd.getUserId());
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(cmd.getUserId(), BadgeKeyEnum.BD.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(cmd.getUserId(), BadgeKeyEnum.BD_LEADER.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
|
||||
if (Objects.nonNull(bd)) {
|
||||
bd.setUpdateUser(cmd.getUpdateUser());
|
||||
bd.setBdLeadUserId(cmd.getUserId());
|
||||
@ -171,8 +174,6 @@ public class TeamLeaderBDServiceImpl implements TeamLeaderBDService {
|
||||
.setBdLeadUserId(cmd.getUserId())
|
||||
);
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(cmd.getUserId(), BadgeKeyEnum.BD.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(cmd.getUserId(), BadgeKeyEnum.BD_LEADER.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -125,6 +125,7 @@ public class AdministratorClientServiceImpl implements AdministratorClientServic
|
||||
}
|
||||
administratorService.removeById(id);
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(sysAdministrator.getUserId(), BadgeKeyEnum.MANAGER.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(sysAdministrator.getUserId(), BadgeKeyEnum.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(sysAdministrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
userProfileGateway.removeCache(sysAdministrator.getUserId());
|
||||
@ -148,17 +149,11 @@ public class AdministratorClientServiceImpl implements AdministratorClientServic
|
||||
}
|
||||
|
||||
if (param.isDisable()) {
|
||||
if (Arrays.asList(RoomRolesEnum.SUPER_ADMIN.name(),
|
||||
RoomRolesEnum.MANAGER.name()).contains(administrator.getRoles())) {
|
||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
}
|
||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.MANAGER.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
}else {
|
||||
if (Arrays.asList(RoomRolesEnum.SUPER_ADMIN.name(),
|
||||
RoomRolesEnum.MANAGER.name()).contains(administrator.getRoles())) {
|
||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
}
|
||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||
changeBadge(administrator.getRoles(), administrator.getUserId());
|
||||
}
|
||||
|
||||
userProfileGateway.removeCache(administrator.getUserId());
|
||||
@ -182,24 +177,34 @@ public class AdministratorClientServiceImpl implements AdministratorClientServic
|
||||
|
||||
Long userId = administrator.getUserId();
|
||||
|
||||
if (RoomRolesEnum.ADMIN.name().equals(roles)) {
|
||||
// 发送ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
// 清除SUPER_ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
} else if (RoomRolesEnum.SUPER_ADMIN.name().equals(roles)) {
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
} else if (RoomRolesEnum.MANAGER.name().equals(roles)) {
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
}
|
||||
changeBadge(roles, userId);
|
||||
|
||||
}
|
||||
|
||||
private void changeBadge(String roles, Long userId) {
|
||||
if (RoomRolesEnum.ADMIN.name().equals(roles)) {
|
||||
// 发送ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
// 清除SUPER_ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.MANAGER.name(),
|
||||
BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
} else if (RoomRolesEnum.SUPER_ADMIN.name().equals(roles)) {
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.MANAGER.name(),
|
||||
BadgeOperateEvent.OperationType.REMOVE.name());
|
||||
} else if (RoomRolesEnum.MANAGER.name().equals(roles)) {
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.MANAGER.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
userMqMessageService.sendBadgeOperateEvent(userId, BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ public class ApiTest {
|
||||
|
||||
@Test
|
||||
public void testPassword() {
|
||||
System.out.println(new BCryptPasswordEncoder().encode("aa1234567890"));
|
||||
System.out.println(new BCryptPasswordEncoder().encode("123456"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -0,0 +1,333 @@
|
||||
package badge;
|
||||
|
||||
import com.red.circle.OtherServiceApplication;
|
||||
import com.red.circle.framework.dto.PageQuery;
|
||||
import com.red.circle.framework.dto.PageResult;
|
||||
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.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.sys.AdministratorService;
|
||||
import com.red.circle.other.infra.database.rds.service.team.BusinessDevelopmentBaseInfoService;
|
||||
import com.red.circle.other.infra.database.rds.service.team.RoomBdLeadService;
|
||||
import com.red.circle.other.inner.enums.material.BadgeKeyEnum;
|
||||
import com.red.circle.other.inner.enums.team.TeamMemberRole;
|
||||
import com.red.circle.wallet.inner.endpoint.freight.FreightGoldClient;
|
||||
import com.red.circle.wallet.inner.model.cmd.UserFreightBalancePageQryCmd;
|
||||
import com.red.circle.wallet.inner.model.dto.UserFreightBalanceDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@Slf4j
|
||||
@SpringBootTest(classes = OtherServiceApplication.class)
|
||||
@RunWith(SpringRunner.class)
|
||||
public class BatchSendBadgeTest {
|
||||
|
||||
@Autowired
|
||||
private TeamMemberService teamMemberService;
|
||||
@Autowired
|
||||
private UserMqMessageService userMqMessageService;
|
||||
@Autowired
|
||||
private BusinessDevelopmentBaseInfoService businessDevelopmentBaseInfoService;
|
||||
@Autowired
|
||||
private RoomBdLeadService roomBdLeadService;
|
||||
@Autowired
|
||||
private AdministratorService administratorService;
|
||||
@Autowired
|
||||
private FreightGoldClient freightGoldClient;
|
||||
|
||||
// 线程池大小
|
||||
private static final int THREAD_POOL_SIZE = 10;
|
||||
// 每批次处理间隔(毫秒)
|
||||
private static final long BATCH_INTERVAL_MS = 200;
|
||||
|
||||
@Test
|
||||
public void batchSendBadgeTest() throws InterruptedException {
|
||||
ExecutorService executor = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
|
||||
|
||||
try {
|
||||
// 1. 批量发放代理主播勋章 (HOST + AGENCY)
|
||||
// sendHostAndAgencyBadges(executor);
|
||||
|
||||
// 2. 批量发放BD LEADER勋章
|
||||
// sendBdLeaderBadges(executor);
|
||||
|
||||
// 3. 批量发放BD勋章
|
||||
// sendBdBadges(executor);
|
||||
|
||||
// 4. 批量发放管理员勋章
|
||||
// sendAdminBadges(executor);
|
||||
|
||||
// 5. 批量发放金币代理勋章
|
||||
sendRechargeAgencyBadges(executor);
|
||||
|
||||
} finally {
|
||||
executor.shutdown();
|
||||
executor.awaitTermination(1, TimeUnit.HOURS);
|
||||
log.info("所有勋章发放任务完成");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发放代理主播勋章.
|
||||
*/
|
||||
private void sendHostAndAgencyBadges(ExecutorService executor) {
|
||||
List<TeamMember> list = teamMemberService.list();
|
||||
log.info("开始发放代理主播勋章,总数: {}", list.size());
|
||||
|
||||
AtomicInteger counter = new AtomicInteger(0);
|
||||
|
||||
list.forEach(teamMember -> {
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
Long userId = teamMember.getMemberId();
|
||||
|
||||
// 发放主播勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.HOST.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
|
||||
if (teamMember.getRole() == TeamMemberRole.OWN) {
|
||||
// 发放代理勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.AGENCY.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
}
|
||||
|
||||
int count = counter.incrementAndGet();
|
||||
if (count % 100 == 0) {
|
||||
log.info("代理主播勋章发放进度: {}/{}", count, list.size());
|
||||
}
|
||||
|
||||
// 控制发送速率
|
||||
Thread.sleep(BATCH_INTERVAL_MS);
|
||||
} catch (Exception e) {
|
||||
log.error("发放代理主播勋章失败, userId: {}", teamMember.getMemberId(), e);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
log.info("代理主播勋章发放任务提交完成");
|
||||
}
|
||||
|
||||
/**
|
||||
* 发放BD Leader勋章.
|
||||
*/
|
||||
private void sendBdLeaderBadges(ExecutorService executor) {
|
||||
List<RoomBdLead> list = roomBdLeadService.list();
|
||||
log.info("开始发放BD Leader勋章,总数: {}", list.size());
|
||||
|
||||
AtomicInteger counter = new AtomicInteger(0);
|
||||
|
||||
list.forEach(bdLead -> {
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
Long userId = bdLead.getUserId();
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.BD_LEADER.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
|
||||
int count = counter.incrementAndGet();
|
||||
if (count % 100 == 0) {
|
||||
log.info("BD Leader勋章发放进度: {}/{}", count, list.size());
|
||||
}
|
||||
|
||||
Thread.sleep(BATCH_INTERVAL_MS);
|
||||
} catch (Exception e) {
|
||||
log.error("发放BD Leader勋章失败, userId: {}", bdLead.getUserId(), e);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
log.info("BD Leader勋章发放任务提交完成");
|
||||
}
|
||||
|
||||
/**
|
||||
* 发放BD勋章.
|
||||
*/
|
||||
private void sendBdBadges(ExecutorService executor) {
|
||||
List<BusinessDevelopmentBaseInfo> list = businessDevelopmentBaseInfoService.listAll();
|
||||
log.info("开始发放BD勋章,总数: {}", list.size());
|
||||
|
||||
AtomicInteger counter = new AtomicInteger(0);
|
||||
|
||||
list.forEach(bd -> {
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
Long userId = bd.getUserId();
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.BD.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
|
||||
int count = counter.incrementAndGet();
|
||||
if (count % 100 == 0) {
|
||||
log.info("BD勋章发放进度: {}/{}", count, list.size());
|
||||
}
|
||||
|
||||
Thread.sleep(BATCH_INTERVAL_MS);
|
||||
} catch (Exception e) {
|
||||
log.error("发放BD勋章失败, userId: {}", bd.getUserId(), e);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
log.info("BD勋章发放任务提交完成");
|
||||
}
|
||||
|
||||
/**
|
||||
* 发放管理员勋章.
|
||||
*/
|
||||
private void sendAdminBadges(ExecutorService executor) {
|
||||
List<Administrator> list = administratorService.list();
|
||||
log.info("开始发放管理员勋章,总数: {}", list.size());
|
||||
|
||||
AtomicInteger counter = new AtomicInteger(0);
|
||||
|
||||
list.forEach(admin -> {
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
Long userId = admin.getUserId();
|
||||
String roles = admin.getRoles();
|
||||
if (!Boolean.TRUE.equals(admin.getStatus())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ("ADMIN".equals(roles)) {
|
||||
// ADMIN角色:只发ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
} else if ("SUPER_ADMIN".equals(roles)) {
|
||||
// SUPER_ADMIN角色:发SUPER_ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
} else if ("MANAGER".equals(roles)) {
|
||||
// MANAGER角色:发SUPER_ADMIN和ADMIN勋章
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.SUPER_ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.ADMIN.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
}
|
||||
|
||||
int count = counter.incrementAndGet();
|
||||
if (count % 100 == 0) {
|
||||
log.info("管理员勋章发放进度: {}/{}", count, list.size());
|
||||
}
|
||||
|
||||
Thread.sleep(BATCH_INTERVAL_MS);
|
||||
} catch (Exception e) {
|
||||
log.error("发放管理员勋章失败, userId: {}", admin.getUserId(), e);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
log.info("管理员勋章发放任务提交完成");
|
||||
}
|
||||
|
||||
/**
|
||||
* 发放充值代理勋章.
|
||||
*/
|
||||
private void sendRechargeAgencyBadges(ExecutorService executor) {
|
||||
log.info("开始发放充值代理勋章");
|
||||
|
||||
AtomicInteger totalCounter = new AtomicInteger(0);
|
||||
int cursor = 1;
|
||||
boolean hasMore = true;
|
||||
|
||||
while (hasMore) {
|
||||
PageQuery pageQuery = new PageQuery();
|
||||
pageQuery.setCursor(cursor);
|
||||
pageQuery.setLimit(500);
|
||||
pageQuery.setSearchCount(true);
|
||||
|
||||
UserFreightBalancePageQryCmd cmd = new UserFreightBalancePageQryCmd();
|
||||
cmd.setClose(false);
|
||||
cmd.setPageQuery(pageQuery);
|
||||
|
||||
try {
|
||||
PageResult<UserFreightBalanceDTO> freightPageResult =
|
||||
freightGoldClient.pageFreight(cmd).getBody();
|
||||
Collection<UserFreightBalanceDTO> records = freightPageResult.getRecords();
|
||||
|
||||
if (records == null || records.isEmpty()) {
|
||||
hasMore = false;
|
||||
break;
|
||||
}
|
||||
|
||||
log.info("充值代理勋章发放,当前页: {}, 本页数量: {}", cursor, records.size());
|
||||
|
||||
records.forEach(freight -> {
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
Long userId = freight.getUserId();
|
||||
if (freight.getClose()) {
|
||||
return;
|
||||
}
|
||||
|
||||
userMqMessageService.sendBadgeOperateEvent(
|
||||
userId,
|
||||
BadgeKeyEnum.RECHARGE_AGENCY.name(),
|
||||
BadgeOperateEvent.OperationType.WEAR.name()
|
||||
);
|
||||
|
||||
int count = totalCounter.incrementAndGet();
|
||||
if (count % 100 == 0) {
|
||||
log.info("充值代理勋章发放进度: {}", count);
|
||||
}
|
||||
|
||||
Thread.sleep(BATCH_INTERVAL_MS);
|
||||
} catch (Exception e) {
|
||||
log.error("发放充值代理勋章失败, userId: {}", freight.getUserId(), e);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
cursor++;
|
||||
|
||||
// 检查是否还有下一页
|
||||
hasMore = freightPageResult.getTotal() > cursor * 500;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("查询充值代理列表失败, cursor: {}", cursor, e);
|
||||
hasMore = false;
|
||||
}
|
||||
}
|
||||
|
||||
log.info("充值代理勋章发放任务提交完成,总数: {}", totalCounter.get());
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user