徽章增加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.asserts.ResponseAssert;
|
||||||
import com.red.circle.framework.core.response.CommonErrorCode;
|
import com.red.circle.framework.core.response.CommonErrorCode;
|
||||||
import com.red.circle.framework.dto.PageResult;
|
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.BdTeamInfoClient;
|
||||||
import com.red.circle.other.inner.endpoint.team.bd.BdTeamMemberClient;
|
import com.red.circle.other.inner.endpoint.team.bd.BdTeamMemberClient;
|
||||||
import com.red.circle.other.inner.endpoint.user.user.UserGoldCoinRechargeClient;
|
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.TeamImportanceLogClient;
|
||||||
import com.red.circle.other.inner.endpoint.team.logs.TeamProcessApprovalClient;
|
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.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.BdTeamPageQryCmd;
|
||||||
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamUpdateOpsCmd;
|
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamUpdateOpsCmd;
|
||||||
import com.red.circle.other.inner.model.cmd.team.bd.BdTeamWorkStatisticsQryCmd;
|
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 TeamImportanceLogClient teamImportanceLogClient;
|
||||||
private final TeamProcessApprovalClient teamProcessApprovalClient;
|
private final TeamProcessApprovalClient teamProcessApprovalClient;
|
||||||
private final UserHistoryIdentityClient userHistoryIdentityClient;
|
private final UserHistoryIdentityClient userHistoryIdentityClient;
|
||||||
|
private final UserMqMessageService userMqMessageService;
|
||||||
private final UserGoldCoinRechargeClient userGoldCoinRechargeClient;
|
private final UserGoldCoinRechargeClient userGoldCoinRechargeClient;
|
||||||
|
|
||||||
|
|
||||||
@ -343,6 +347,8 @@ public class TeamBDInfoServiceImpl implements TeamBDInfoService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
userHistoryIdentityClient.saveBd(userProfile.getId());
|
userHistoryIdentityClient.saveBd(userProfile.getId());
|
||||||
|
|
||||||
|
userMqMessageService.sendBadgeOperateEvent(userProfile.getId(), BadgeKeyEnum.BD.name(), BadgeOperateEvent.OperationType.WEAR.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -373,6 +379,8 @@ public class TeamBDInfoServiceImpl implements TeamBDInfoService {
|
|||||||
.setCreateUserOrigin(1)
|
.setCreateUserOrigin(1)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
userMqMessageService.sendBadgeOperateEvent(db.getUserId(), BadgeKeyEnum.BD.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||||
|
|
||||||
// 获得需要被移除的成员
|
// 获得需要被移除的成员
|
||||||
List<BdTeamMemberDTO> teamList = bdTeamMemberClient
|
List<BdTeamMemberDTO> teamList = bdTeamMemberClient
|
||||||
.listByUserId(db.getUserId()).getBody();
|
.listByUserId(db.getUserId()).getBody();
|
||||||
|
|||||||
@ -152,6 +152,9 @@ public class TeamLeaderBDServiceImpl implements TeamLeaderBDService {
|
|||||||
|
|
||||||
userHistoryIdentityClient.saveBd(cmd.getUserId());
|
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)) {
|
if (Objects.nonNull(bd)) {
|
||||||
bd.setUpdateUser(cmd.getUpdateUser());
|
bd.setUpdateUser(cmd.getUpdateUser());
|
||||||
bd.setBdLeadUserId(cmd.getUserId());
|
bd.setBdLeadUserId(cmd.getUserId());
|
||||||
@ -171,8 +174,6 @@ public class TeamLeaderBDServiceImpl implements TeamLeaderBDService {
|
|||||||
.setBdLeadUserId(cmd.getUserId())
|
.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
|
@Override
|
||||||
|
|||||||
@ -125,6 +125,7 @@ public class AdministratorClientServiceImpl implements AdministratorClientServic
|
|||||||
}
|
}
|
||||||
administratorService.removeById(id);
|
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.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||||
userMqMessageService.sendBadgeOperateEvent(sysAdministrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
userMqMessageService.sendBadgeOperateEvent(sysAdministrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||||
userProfileGateway.removeCache(sysAdministrator.getUserId());
|
userProfileGateway.removeCache(sysAdministrator.getUserId());
|
||||||
@ -148,17 +149,11 @@ public class AdministratorClientServiceImpl implements AdministratorClientServic
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (param.isDisable()) {
|
if (param.isDisable()) {
|
||||||
if (Arrays.asList(RoomRolesEnum.SUPER_ADMIN.name(),
|
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||||
RoomRolesEnum.MANAGER.name()).contains(administrator.getRoles())) {
|
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.MANAGER.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.SUPER_ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
|
||||||
}
|
|
||||||
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
userMqMessageService.sendBadgeOperateEvent(administrator.getUserId(), BadgeKeyEnum.ADMIN.name(), BadgeOperateEvent.OperationType.REMOVE.name());
|
||||||
}else {
|
}else {
|
||||||
if (Arrays.asList(RoomRolesEnum.SUPER_ADMIN.name(),
|
changeBadge(administrator.getRoles(), administrator.getUserId());
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
userProfileGateway.removeCache(administrator.getUserId());
|
userProfileGateway.removeCache(administrator.getUserId());
|
||||||
@ -182,24 +177,34 @@ public class AdministratorClientServiceImpl implements AdministratorClientServic
|
|||||||
|
|
||||||
Long userId = administrator.getUserId();
|
Long userId = administrator.getUserId();
|
||||||
|
|
||||||
if (RoomRolesEnum.ADMIN.name().equals(roles)) {
|
changeBadge(roles, userId);
|
||||||
// 发送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());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
@Test
|
||||||
public void testPassword() {
|
public void testPassword() {
|
||||||
System.out.println(new BCryptPasswordEncoder().encode("aa1234567890"));
|
System.out.println(new BCryptPasswordEncoder().encode("123456"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@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